
  import { getToken } from '@/utils/auth.js';
  import Message from '@/components/Message/index.js';
  import axios from "axios"


  const errorCode={
  '401': '认证失败，无法访问系统资源',
  '403': '当前操作没有权限',
  '404': '访问资源不存在',
  'default': '系统未知错误，请反馈给管理员'
  };

  let config = {
      baseURL: '/prod-api',
      timeout: 60 * 1000, // Timeout
      // withCredentials: true, // Check cross-site Access-Control
  };
  
  const _axios = axios.create(config);
  
  // 添加请求拦截器
  _axios.interceptors.request.use(
      function (config) {
          // 在发送请求之前做些什么
          // 是否需要设置 token
          const isToken = (config.headers || {}).isToken === false
          // 让每个请求携带自定义token 请根据实际情况自行修改
          if (getToken() && !isToken) {
            config.headers['Authorization'] = 'Bearer ' + getToken() 
          }
          return config;
      },
      function (error) {
          // 对请求错误做些什么
          Message({ type: 'error', text: '发起网络请求失败'})
          return Promise.reject(error);
      }
  );
  
  // 添加响应拦截器
  _axios.interceptors.response.use(
      function (res) {
          // 2xx 范围内的状态码都会触发该函数。
          // 对响应数据做点什么
          const code = res.data.code || 200;
          const msg = errorCode[code] || res.data.msg || errorCode['default']
    
          if (code === 500) {
            Message({ type: 'error', text: '登陆过期' })
            return Promise.reject(new Error(msg))
          } else if (code !== 200) {
            Message({ type: 'error', text: '请求错误'+msg })
            return Promise.reject('error')
          } else {
            return  Promise.resolve(res.data)
          }

      },
      function (error) {
          // 超出 2xx 范围的状态码都会触发该函数。
          // 对响应错误做点什么
          Message({ type: 'error', text: '网络请求失败' })
          return Promise.reject(error);
      }
  );
  
  export default _axios

  